import com.sun.org.apache.bcel.internal.generic.NEW;
import org.junit.Test;

import java.io.*;
import java.util.Arrays;

public class Demo {


    // 3.复制文件夹d:/java下面所有文件和子文件夹内容到d:/java2。
    //提示：涉及单个文件复制、目录的创建、递归的使用
    @Test
    public void test1() {
        // ctrl + alt + ↓
        String src = "D:\\软件";
        String target = "D:\\软件2";

        copyDir(new File(src), new File(target));


    }

    private void copyDir(File src, File target) {
        File[] files = src.listFiles();

        for (File file : files) {
            if (file.isDirectory()) {
                // System.out.println(file.getAbsolutePath());

                String dirName = file.getName();// 获取需要赋值的文件夹名称
                // 在目标文件夹下创建同名的文件夹
                File copyDir = new File(target, dirName);
                if (!copyDir.exists()) {
                    copyDir.mkdirs();
                }
                copyDir(file, copyDir);

            } else {
                // 就是文件, 复制文件
                // 创建目标文件
                File copyFile = new File(target, file.getName());
                System.out.println(file.getAbsolutePath());
                System.out.println(copyFile);
                copyFile(file, copyFile);
            }
        }
    }


    public void copyFile(File srcFile, File targetFile) {
        try {
            BufferedInputStream bis = new BufferedInputStream(
                    new FileInputStream(srcFile), 16384);

            BufferedOutputStream bos = new BufferedOutputStream(
                    new FileOutputStream(targetFile), 16384);

            // 一次读写一个字节数组
            byte[] bys = new byte[1024];
            int len;
            while ((len = bis.read(bys)) != -1) {
                bos.write(bys, 0, len);
            }

            bos.close();
            bis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

    private void copyFile1(File src, File target) {
        File[] files = src.listFiles();

        for (File file : files) {
            if (file.isDirectory()) {


            } else {
                // 就是文件, 复制文件
            }
        }


    }


    public static void main(String[] args) throws Exception {
        /*
        1.实现字符串和字节数组之间的相互转换。必如将字符串“数加科技sjkj”转换为字节数组，并将字节数组再转换回字符串。
         */
        String str = "数加科技";
        byte[] bys = str.getBytes("gbk");
        System.out.println(Arrays.toString(bys));

        String result = new String(bys, "GBK");
        System.out.println(result);

    }


}
